package com.ruoyi.system.domain;

import java.util.Date;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 储值卡规则操作记录，记录储值卡规则变更的全生命周期操作详情对象 stored_value_card_rule_operation_log
 *
 * @author ruoyi
 * @date 2025-05-22
 */
public class StoredValueCardRuleOperationLog extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 自增主键ID，唯一标识每条操作记录 */
    private Long id;

    /** 储值卡编号（如SVC20230001，关联储值卡表主键） */
    @Excel(name = "储值卡编号", readConverterExp = "如=SVC20230001，关联储值卡表主键")
    private String cardCode;

    /** 门店信息（JSON格式，记录操作涉及的门店详情，如{"store_id":"BJ-001","store_name":"北京朝阳店"}） */
    @Excel(name = "门店信息", readConverterExp = "J=SON格式，记录操作涉及的门店详情")
    private String storeInfo;

    /** 操作门店（记录执行操作的门店名称或编号，如"总部运营中心"） */
    @Excel(name = "操作门店", readConverterExp = "记=录执行操作的门店名称或编号")
    private String operatorStore;

    /** 操作类型（枚举值，明确操作行为） */
    @Excel(name = "操作类型", readConverterExp = "枚=举值，明确操作行为")
    private String operationType;

    /** 操作开始时间（记录操作启动的具体时间点） */
    @Excel(name = "操作开始时间", readConverterExp = "记=录操作启动的具体时间点")
    private Date operationStartTime;

    /** 操作结束时间（记录操作完成的具体时间点，可为空表示未完成） */
    @Excel(name = "操作结束时间", readConverterExp = "记=录操作完成的具体时间点，可为空表示未完成")
    private Date operationEndTime;

    /** 操作员工（记录执行操作的员工姓名或工号） */
    @Excel(name = "操作员工", readConverterExp = "记=录执行操作的员工姓名或工号")
    private String operatorEmployee;

    /** 业务类型（如"会员营销""系统配置""门店管理"，用于分类操作场景） */
    @Excel(name = "业务类型")
    private String businessType;

    /** 操作记录编号（唯一标识，如OP20231001-0001，含日期+流水号） */
    @Excel(name = "操作记录编号", readConverterExp = "唯=一标识，如OP20231001-0001，含日期+流水号")
    private String operationRecordCode;

    /** 操作名称（如"为北京朝阳店添加黄金储值卡规则"） */
    @Excel(name = "操作名称")
    private String operationName;

    /** 操作前状态（JSON格式，记录操作前的储值卡规则配置） */
    @Excel(name = "操作前状态", readConverterExp = "J=SON格式，记录操作前的储值卡规则配置")
    private String beforeOperation;

    /** 操作后状态（JSON格式，记录操作后的储值卡规则配置） */
    @Excel(name = "操作后状态", readConverterExp = "J=SON格式，记录操作后的储值卡规则配置")
    private String afterOperation;

    /** 操作结果（记录操作执行状态） */
    @Excel(name = "操作结果", readConverterExp = "记=录操作执行状态")
    private String operationResult;

    /** 错误信息（记录操作失败时的错误详情，成功时为空） */
    @Excel(name = "错误信息", readConverterExp = "记=录操作失败时的错误详情，成功时为空")
    private String errorMessage;

    /** 逻辑删除标记（1=已删除，0=未删除，用于软删除） */
    @Excel(name = "逻辑删除标记", readConverterExp = "1==已删除，0=未删除，用于软删除")
    private Integer isDeleted;

    /** 手机号 */
    @Excel(name = "手机号")
    private String phone;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setCardCode(String cardCode)
    {
        this.cardCode = cardCode;
    }

    public String getCardCode()
    {
        return cardCode;
    }

    public void setStoreInfo(String storeInfo)
    {
        this.storeInfo = storeInfo;
    }

    public String getStoreInfo()
    {
        return storeInfo;
    }

    public void setOperatorStore(String operatorStore)
    {
        this.operatorStore = operatorStore;
    }

    public String getOperatorStore()
    {
        return operatorStore;
    }

    public void setOperationType(String operationType)
    {
        this.operationType = operationType;
    }

    public String getOperationType()
    {
        return operationType;
    }

    public void setOperationStartTime(Date operationStartTime)
    {
        this.operationStartTime = operationStartTime;
    }

    public Date getOperationStartTime()
    {
        return operationStartTime;
    }

    public void setOperationEndTime(Date operationEndTime)
    {
        this.operationEndTime = operationEndTime;
    }

    public Date getOperationEndTime()
    {
        return operationEndTime;
    }

    public void setOperatorEmployee(String operatorEmployee)
    {
        this.operatorEmployee = operatorEmployee;
    }

    public String getOperatorEmployee()
    {
        return operatorEmployee;
    }

    public void setBusinessType(String businessType)
    {
        this.businessType = businessType;
    }

    public String getBusinessType()
    {
        return businessType;
    }

    public void setOperationRecordCode(String operationRecordCode)
    {
        this.operationRecordCode = operationRecordCode;
    }

    public String getOperationRecordCode()
    {
        return operationRecordCode;
    }

    public void setOperationName(String operationName)
    {
        this.operationName = operationName;
    }

    public String getOperationName()
    {
        return operationName;
    }

    public void setBeforeOperation(String beforeOperation)
    {
        this.beforeOperation = beforeOperation;
    }

    public String getBeforeOperation()
    {
        return beforeOperation;
    }

    public void setAfterOperation(String afterOperation)
    {
        this.afterOperation = afterOperation;
    }

    public String getAfterOperation()
    {
        return afterOperation;
    }

    public void setOperationResult(String operationResult)
    {
        this.operationResult = operationResult;
    }

    public String getOperationResult()
    {
        return operationResult;
    }

    public void setErrorMessage(String errorMessage)
    {
        this.errorMessage = errorMessage;
    }

    public String getErrorMessage()
    {
        return errorMessage;
    }

    public void setIsDeleted(Integer isDeleted)
    {
        this.isDeleted = isDeleted;
    }

    public Integer getIsDeleted()
    {
        return isDeleted;
    }

    public void setPhone(String phone)
    {
        this.phone = phone;
    }

    public String getPhone()
    {
        return phone;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("cardCode", getCardCode())
                .append("storeInfo", getStoreInfo())
                .append("operatorStore", getOperatorStore())
                .append("operationType", getOperationType())
                .append("operationStartTime", getOperationStartTime())
                .append("operationEndTime", getOperationEndTime())
                .append("operatorEmployee", getOperatorEmployee())
                .append("businessType", getBusinessType())
                .append("operationRecordCode", getOperationRecordCode())
                .append("operationName", getOperationName())
                .append("beforeOperation", getBeforeOperation())
                .append("afterOperation", getAfterOperation())
                .append("operationResult", getOperationResult())
                .append("errorMessage", getErrorMessage())
                .append("createTime", getCreateTime())
                .append("isDeleted", getIsDeleted())
                .append("phone", getPhone())
                .toString();
    }
}
